/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.edu.upc.sigu.entities;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Collection;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Usuario2
 */
@Entity
@Table(name = "aca_docentes_periodos" , catalog= "sigu")
@NamedQueries({
    @NamedQuery(name = "DocentesPeriodos.findAll", query = "SELECT d FROM DocentesPeriodos d"),
    @NamedQuery(name = "DocentesPeriodos.findByInstitucion", query = "SELECT d FROM DocentesPeriodos d WHERE d.docentesPeriodosPK.institucion = :institucion"),
    @NamedQuery(name = "DocentesPeriodos.findByPeriodo", query = "SELECT d FROM DocentesPeriodos d WHERE d.docentesPeriodosPK.periodo = :periodo"),
    @NamedQuery(name = "DocentesPeriodos.findByPersonal", query = "SELECT d FROM DocentesPeriodos d WHERE d.docentesPeriodosPK.personal = :personal"),
    @NamedQuery(name = "DocentesPeriodos.findByCarreraReferencial", query = "SELECT d FROM DocentesPeriodos d WHERE d.carreraReferencial = :carreraReferencial"),
    @NamedQuery(name = "DocentesPeriodos.findByTituloProfesional", query = "SELECT d FROM DocentesPeriodos d WHERE d.tituloProfesional = :tituloProfesional"),
    @NamedQuery(name = "DocentesPeriodos.findByGradoInstruccion", query = "SELECT d FROM DocentesPeriodos d WHERE d.gradoInstruccion = :gradoInstruccion"),
    @NamedQuery(name = "DocentesPeriodos.findByPeriodoIngreso", query = "SELECT d FROM DocentesPeriodos d WHERE d.periodoIngreso = :periodoIngreso"),
    @NamedQuery(name = "DocentesPeriodos.findByTipoModalidad", query = "SELECT d FROM DocentesPeriodos d WHERE d.tipoModalidad = :tipoModalidad"),
    @NamedQuery(name = "DocentesPeriodos.findByPuntaje", query = "SELECT d FROM DocentesPeriodos d WHERE d.puntaje = :puntaje"),
    @NamedQuery(name = "DocentesPeriodos.findByCategoriaAnr", query = "SELECT d FROM DocentesPeriodos d WHERE d.categoriaAnr = :categoriaAnr"),
    @NamedQuery(name = "DocentesPeriodos.findByCategoria", query = "SELECT d FROM DocentesPeriodos d WHERE d.categoria = :categoria"),
    @NamedQuery(name = "DocentesPeriodos.findByTipoDedicacion", query = "SELECT d FROM DocentesPeriodos d WHERE d.tipoDedicacion = :tipoDedicacion"),
    @NamedQuery(name = "DocentesPeriodos.findByTipoRegimen", query = "SELECT d FROM DocentesPeriodos d WHERE d.tipoRegimen = :tipoRegimen"),
    @NamedQuery(name = "DocentesPeriodos.findByCargaLectiva", query = "SELECT d FROM DocentesPeriodos d WHERE d.cargaLectiva = :cargaLectiva"),
    @NamedQuery(name = "DocentesPeriodos.findByCargaAdministrativa", query = "SELECT d FROM DocentesPeriodos d WHERE d.cargaAdministrativa = :cargaAdministrativa"),
    @NamedQuery(name = "DocentesPeriodos.findByCargaInvestigacion", query = "SELECT d FROM DocentesPeriodos d WHERE d.cargaInvestigacion = :cargaInvestigacion"),
    @NamedQuery(name = "DocentesPeriodos.findByCargaBienestar", query = "SELECT d FROM DocentesPeriodos d WHERE d.cargaBienestar = :cargaBienestar"),
    @NamedQuery(name = "DocentesPeriodos.findByCargaProyeccionSocial", query = "SELECT d FROM DocentesPeriodos d WHERE d.cargaProyeccionSocial = :cargaProyeccionSocial"),
    @NamedQuery(name = "DocentesPeriodos.findByCargaBienesServicio", query = "SELECT d FROM DocentesPeriodos d WHERE d.cargaBienesServicio = :cargaBienesServicio"),
    @NamedQuery(name = "DocentesPeriodos.findByCargaConsejeria", query = "SELECT d FROM DocentesPeriodos d WHERE d.cargaConsejeria = :cargaConsejeria"),
    @NamedQuery(name = "DocentesPeriodos.findByRemuneracionSinIncentivo", query = "SELECT d FROM DocentesPeriodos d WHERE d.remuneracionSinIncentivo = :remuneracionSinIncentivo"),
    @NamedQuery(name = "DocentesPeriodos.findByRemuneracionConIncentivo", query = "SELECT d FROM DocentesPeriodos d WHERE d.remuneracionConIncentivo = :remuneracionConIncentivo"),
    @NamedQuery(name = "DocentesPeriodos.findByCurso", query = "SELECT d FROM DocentesPeriodos d WHERE d.curso = :curso"),
    @NamedQuery(name = "DocentesPeriodos.findByFechaInicioDictado", query = "SELECT d FROM DocentesPeriodos d WHERE d.fechaInicioDictado = :fechaInicioDictado"),
    @NamedQuery(name = "DocentesPeriodos.findByCreacionUsuario", query = "SELECT d FROM DocentesPeriodos d WHERE d.creacionUsuario = :creacionUsuario"),
    @NamedQuery(name = "DocentesPeriodos.findByCreacionEstacion", query = "SELECT d FROM DocentesPeriodos d WHERE d.creacionEstacion = :creacionEstacion"),
    @NamedQuery(name = "DocentesPeriodos.findByCreacionFecha", query = "SELECT d FROM DocentesPeriodos d WHERE d.creacionFecha = :creacionFecha"),
    @NamedQuery(name = "DocentesPeriodos.findByControlUsuario", query = "SELECT d FROM DocentesPeriodos d WHERE d.controlUsuario = :controlUsuario"),
    @NamedQuery(name = "DocentesPeriodos.findByControlEstacion", query = "SELECT d FROM DocentesPeriodos d WHERE d.controlEstacion = :controlEstacion"),
    @NamedQuery(name = "DocentesPeriodos.findByControlFecha", query = "SELECT d FROM DocentesPeriodos d WHERE d.controlFecha = :controlFecha")})
public class DocentesPeriodos implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected DocentesPeriodosPK docentesPeriodosPK;
    @Column(name = "carrera_referencial")
    private String carreraReferencial;
    @Column(name = "titulo_profesional")
    private Integer tituloProfesional;
    @Column(name = "grado_instruccion")
    private Integer gradoInstruccion;
    @Column(name = "periodo_ingreso")
    private String periodoIngreso;
    @Column(name = "tipo_modalidad")
    private Integer tipoModalidad;
    @Column(name = "puntaje")
    private BigDecimal puntaje;
    @Column(name = "categoria_anr")
    private Integer categoriaAnr;
    @Column(name = "categoria")
    private Integer categoria;
    @Column(name = "tipo_dedicacion")
    private Integer tipoDedicacion;
    @Column(name = "tipo_regimen")
    private Integer tipoRegimen;
    @Column(name = "carga_lectiva")
    private Integer cargaLectiva;
    @Column(name = "carga_administrativa")
    private Integer cargaAdministrativa;
    @Column(name = "carga_investigacion")
    private Integer cargaInvestigacion;
    @Column(name = "carga_bienestar")
    private Integer cargaBienestar;
    @Column(name = "carga_proyeccion_social")
    private Integer cargaProyeccionSocial;
    @Column(name = "carga_bienes_servicio")
    private Integer cargaBienesServicio;
    @Column(name = "carga_consejeria")
    private Integer cargaConsejeria;
    @Column(name = "remuneracion_sin_incentivo")
    private BigDecimal remuneracionSinIncentivo;
    @Column(name = "remuneracion_con_incentivo")
    private BigDecimal remuneracionConIncentivo;
    @Column(name = "curso")
    private String curso;
    @Column(name = "fecha_inicio_dictado")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaInicioDictado;
    @Column(name = "creacion_usuario")
    private String creacionUsuario;
    @Column(name = "creacion_estacion")
    private String creacionEstacion;
    @Column(name = "creacion_fecha")
    @Temporal(TemporalType.TIMESTAMP)
    private Date creacionFecha;
    @Column(name = "control_usuario")
    private String controlUsuario;
    @Column(name = "control_estacion")
    private String controlEstacion;
    @Column(name = "control_fecha")
    @Temporal(TemporalType.TIMESTAMP)
    private Date controlFecha;
    @JoinColumn(name = "estado_registro", referencedColumnName = "estado_registro")
    @ManyToOne
    private EstadoRegistros estadoRegistros;
    @JoinColumns({
        @JoinColumn(name = "institucion", referencedColumnName = "institucion", insertable = false, updatable = false),
        @JoinColumn(name = "personal", referencedColumnName = "personal", insertable = false, updatable = false)})
    @ManyToOne(optional = false)
    private Personal personal1;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "docentesPeriodos")
    private Collection<CursosSeccionesDocentes> cursosSeccionesDocentesCollection;

        @JoinColumns({
        @JoinColumn(name = "institucion", referencedColumnName = "institucion", insertable = false, updatable = false),
        @JoinColumn(name = "periodo", referencedColumnName = "periodo", insertable = false, updatable = false)})
    @ManyToOne(optional = false)
    private Periodos periodos;

    public DocentesPeriodos() {
    }

    public DocentesPeriodos(DocentesPeriodosPK docentesPeriodosPK) {
        this.docentesPeriodosPK = docentesPeriodosPK;
    }

    public DocentesPeriodos(int institucion, String periodo, String personal) {
        this.docentesPeriodosPK = new DocentesPeriodosPK(institucion, periodo, personal);
    }

    public DocentesPeriodosPK getDocentesPeriodosPK() {
        return docentesPeriodosPK;
    }

    public void setDocentesPeriodosPK(DocentesPeriodosPK docentesPeriodosPK) {
        this.docentesPeriodosPK = docentesPeriodosPK;
    }

    public String getCarreraReferencial() {
        return carreraReferencial;
    }

    public void setCarreraReferencial(String carreraReferencial) {
        this.carreraReferencial = carreraReferencial;
    }

    public Integer getTituloProfesional() {
        return tituloProfesional;
    }

    public void setTituloProfesional(Integer tituloProfesional) {
        this.tituloProfesional = tituloProfesional;
    }

    public Integer getGradoInstruccion() {
        return gradoInstruccion;
    }

    public void setGradoInstruccion(Integer gradoInstruccion) {
        this.gradoInstruccion = gradoInstruccion;
    }

    public String getPeriodoIngreso() {
        return periodoIngreso;
    }

    public void setPeriodoIngreso(String periodoIngreso) {
        this.periodoIngreso = periodoIngreso;
    }

    public Integer getTipoModalidad() {
        return tipoModalidad;
    }

    public void setTipoModalidad(Integer tipoModalidad) {
        this.tipoModalidad = tipoModalidad;
    }

    public BigDecimal getPuntaje() {
        return puntaje;
    }

    public void setPuntaje(BigDecimal puntaje) {
        this.puntaje = puntaje;
    }

    public Integer getCategoriaAnr() {
        return categoriaAnr;
    }

    public void setCategoriaAnr(Integer categoriaAnr) {
        this.categoriaAnr = categoriaAnr;
    }

    public Integer getCategoria() {
        return categoria;
    }

    public void setCategoria(Integer categoria) {
        this.categoria = categoria;
    }

    public Integer getTipoDedicacion() {
        return tipoDedicacion;
    }

    public void setTipoDedicacion(Integer tipoDedicacion) {
        this.tipoDedicacion = tipoDedicacion;
    }

    public Integer getTipoRegimen() {
        return tipoRegimen;
    }

    public void setTipoRegimen(Integer tipoRegimen) {
        this.tipoRegimen = tipoRegimen;
    }

    public Integer getCargaLectiva() {
        return cargaLectiva;
    }

    public void setCargaLectiva(Integer cargaLectiva) {
        this.cargaLectiva = cargaLectiva;
    }

    public Integer getCargaAdministrativa() {
        return cargaAdministrativa;
    }

    public void setCargaAdministrativa(Integer cargaAdministrativa) {
        this.cargaAdministrativa = cargaAdministrativa;
    }

    public Integer getCargaInvestigacion() {
        return cargaInvestigacion;
    }

    public void setCargaInvestigacion(Integer cargaInvestigacion) {
        this.cargaInvestigacion = cargaInvestigacion;
    }

    public Integer getCargaBienestar() {
        return cargaBienestar;
    }

    public void setCargaBienestar(Integer cargaBienestar) {
        this.cargaBienestar = cargaBienestar;
    }

    public Integer getCargaProyeccionSocial() {
        return cargaProyeccionSocial;
    }

    public void setCargaProyeccionSocial(Integer cargaProyeccionSocial) {
        this.cargaProyeccionSocial = cargaProyeccionSocial;
    }

    public Integer getCargaBienesServicio() {
        return cargaBienesServicio;
    }

    public void setCargaBienesServicio(Integer cargaBienesServicio) {
        this.cargaBienesServicio = cargaBienesServicio;
    }

    public Integer getCargaConsejeria() {
        return cargaConsejeria;
    }

    public void setCargaConsejeria(Integer cargaConsejeria) {
        this.cargaConsejeria = cargaConsejeria;
    }

    public BigDecimal getRemuneracionSinIncentivo() {
        return remuneracionSinIncentivo;
    }

    public void setRemuneracionSinIncentivo(BigDecimal remuneracionSinIncentivo) {
        this.remuneracionSinIncentivo = remuneracionSinIncentivo;
    }

    public BigDecimal getRemuneracionConIncentivo() {
        return remuneracionConIncentivo;
    }

    public void setRemuneracionConIncentivo(BigDecimal remuneracionConIncentivo) {
        this.remuneracionConIncentivo = remuneracionConIncentivo;
    }

    public String getCurso() {
        return curso;
    }

    public void setCurso(String curso) {
        this.curso = curso;
    }

    public Date getFechaInicioDictado() {
        return fechaInicioDictado;
    }

    public void setFechaInicioDictado(Date fechaInicioDictado) {
        this.fechaInicioDictado = fechaInicioDictado;
    }

    public String getCreacionUsuario() {
        return creacionUsuario;
    }

    public void setCreacionUsuario(String creacionUsuario) {
        this.creacionUsuario = creacionUsuario;
    }

    public String getCreacionEstacion() {
        return creacionEstacion;
    }

    public void setCreacionEstacion(String creacionEstacion) {
        this.creacionEstacion = creacionEstacion;
    }

    public Date getCreacionFecha() {
        return creacionFecha;
    }

    public void setCreacionFecha(Date creacionFecha) {
        this.creacionFecha = creacionFecha;
    }

    public String getControlUsuario() {
        return controlUsuario;
    }

    public void setControlUsuario(String controlUsuario) {
        this.controlUsuario = controlUsuario;
    }

    public String getControlEstacion() {
        return controlEstacion;
    }

    public void setControlEstacion(String controlEstacion) {
        this.controlEstacion = controlEstacion;
    }

    public Date getControlFecha() {
        return controlFecha;
    }

    public void setControlFecha(Date controlFecha) {
        this.controlFecha = controlFecha;
    }

    public EstadoRegistros getEstadoRegistros() {
        return estadoRegistros;
    }

    public void setEstadoRegistros(EstadoRegistros estadoRegistros) {
        this.estadoRegistros = estadoRegistros;
    }

    public Personal getPersonal1() {
        return personal1;
    }

    public void setPersonal1(Personal personal1) {
        this.personal1 = personal1;
    }

    public Collection<CursosSeccionesDocentes> getCursosSeccionesDocentesCollection() {
        return cursosSeccionesDocentesCollection;
    }

    public void setCursosSeccionesDocentesCollection(Collection<CursosSeccionesDocentes> cursosSeccionesDocentesCollection) {
        this.cursosSeccionesDocentesCollection = cursosSeccionesDocentesCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (docentesPeriodosPK != null ? docentesPeriodosPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof DocentesPeriodos)) {
            return false;
        }
        DocentesPeriodos other = (DocentesPeriodos) object;
        if ((this.docentesPeriodosPK == null && other.docentesPeriodosPK != null) || (this.docentesPeriodosPK != null && !this.docentesPeriodosPK.equals(other.docentesPeriodosPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "pe.edu.upc.sigu.entities.DocentesPeriodos[docentesPeriodosPK=" + docentesPeriodosPK + "]";
    }

    /**
     * @return the periodos
     */
    public Periodos getPeriodos() {
        return periodos;
    }

    /**
     * @param periodos the periodos to set
     */
    public void setPeriodos(Periodos periodos) {
        this.periodos = periodos;
    }

}
